New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-querybuilder

Package Overview
Dependencies
Maintainers
2
Versions
197
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-querybuilder

The React <QueryBuilder /> component for constructing queries

  • 5.4.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
44K
decreased by-21.77%
Maintainers
2
Weekly downloads
 
Created
Source

react-querybuilder

The Query Builder component for React

React Query Builder is a fully customizable query builder component for React, along with a collection of utility functions for importing from, and exporting to, various query languages like SQL, MongoDB, and more.

Screenshot

Documentation

Complete documentation is available at react-querybuilder.js.org.

Demo

Click here to see a live, interactive demo.

To use the official compatibility components as seen in the demo, take a look at the packages under the @react-querybuilder org on npmjs.com. We currently support:

LibrarynpmDemoExample
Ant Design@react-querybuilder/antddemoexample
Bootstrap@react-querybuilder/bootstrapdemoexample
Bulma@react-querybuilder/bulmademoexample
Chakra UI@react-querybuilder/chakrademoexample
MUI@react-querybuilder/materialdemoexample

Basic usage

npm install react-querybuilder --save
# OR
yarn add react-querybuilder
import { useState } from 'react';
import { Field, QueryBuilder, RuleGroupType } from 'react-querybuilder';
import 'react-querybuilder/dist/query-builder.css';

const fields: Field[] = [
  { name: 'firstName', label: 'First Name' },
  { name: 'lastName', label: 'Last Name' },
  { name: 'age', label: 'Age', inputType: 'number' },
  { name: 'address', label: 'Address' },
  { name: 'phone', label: 'Phone' },
  { name: 'email', label: 'Email', validator: ({ value }) => /^[^@]+@[^@]+/.test(value) },
  { name: 'twitter', label: 'Twitter' },
  { name: 'isDev', label: 'Is a Developer?', valueEditorType: 'checkbox', defaultValue: false },
];

const initialQuery: RuleGroupType = {
  combinator: 'and',
  rules: [],
};

export const App = () => {
  const [query, setQuery] = useState(initialQuery);

  return <QueryBuilder fields={fields} query={query} onQueryChange={q => setQuery(q)} />;
};

To enable drag-and-drop functionality, install the @react-querybuilder/dnd package and nest <QueryBuilder /> under <QueryBuilderDnD />.

Export

To export queries as SQL, MongoDB, or one of several other formats, use the formatQuery function.

const query = {
  combinator: 'and',
  rules: [
    {
      field: 'first_name',
      operator: 'beginsWith',
      value: 'Stev',
    },
    {
      field: 'last_name',
      operator: 'in',
      value: 'Vai, Vaughan',
    },
  ],
};
const sqlWhere = formatQuery(query, 'sql');
console.log(sqlWhere);
/*
`(first_name like 'Stev%' and last_name in ('Vai', 'Vaughan'))`
*/

Import

To import queries use parseSQL, parseCEL, parseJsonLogic, or parseMongoDB depending on the source.

Tip: parseSQL will accept a full SELECT statement or the WHERE clause by itself (everything but the expressions in the WHERE clause will be ignored). Trailing semicolon is optional.

const query = parseSQL(
  `SELECT * FROM my_table WHERE first_name LIKE 'Stev%' AND last_name in ('Vai', 'Vaughan')`
);
console.log(query);
/*
{
  "combinator": "and",
  "rules": [
    {
      "field": "first_name",
      "operator": "beginsWith",
      "value": "Stev",
    },
    {
      "field": "last_name",
      "operator": "in",
      "value": "Vai, Vaughan",
    },
  ],
}
*/

Note: formatQuery and the parse* functions can be used without importing React (e.g., on the server) like this:

import { formatQuery } from 'react-querybuilder/dist/formatQuery';
import { parseCEL } from 'react-querybuilder/dist/parseCEL';
import { parseJsonLogic } from 'react-querybuilder/dist/parseJsonLogic';
import { parseMongoDB } from 'react-querybuilder/dist/parseMongoDB';
import { parseSQL } from 'react-querybuilder/dist/parseSQL';

Keywords

FAQs

Package last updated on 31 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc